<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Results of <span>Northwind database rows serialization</span> benchmarks run at 06/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize the first row from each table in the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a><strong>1,000</strong> Times. <br/><br/>The full source code of the serialization benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>4097</td><th>4.68x</th><td>275544</td><td>783592</td><td>1059136</td><td>1059.136</td><th>8.28x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1958</td><th>2.24x</th><td>431895</td><td>1034763</td><td>1466658</td><td>1466.658</td><th>11.47x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>4927</td><th>5.62x</th><td>1036852</td><td>601307</td><td>1638159</td><td>1638.159</td><th>12.81x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>2014</td><th>2.30x</th><td>349065</td><td>899853</td><td>1248918</td><td>1248.918</td><th>9.76x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>876</td><th>1x</th><td>68981</td><td>58940</td><td>127921</td><td>127.921</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>1560</td><th>1.78x</th><td>195101</td><td>100984</td><td>296085</td><td>296.085</td><th>2.31x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>275</td><th>4.74x</th><td>19175</td><td>125403</td><td>144578</td><td>144.578</td><th>18.44x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>95</td><th>1.64x</th><td>34043</td><td>68698</td><td>102741</td><td>102.741</td><th>13.10x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>329</td><th>5.67x</th><td>47817</td><td>41834</td><td>89651</td><td>89.651</td><th>11.43x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>110</td><th>1.90x</th><td>15270</td><td>54282</td><td>69552</td><td>69.552</td><th>8.87x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>58</td><th>1x</th><td>4060</td><td>3781</td><td>7841</td><td>7.841</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>87</td><th>1.5x</th><td>12178</td><td>4513</td><td>16691</td><td>16.691</td><th>2.13x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CustomerDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>482</td><th>3.74x</th><td>28992</td><td>85819</td><td>114811</td><td>114.811</td><th>5.40x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>256</td><th>1.98x</th><td>39865</td><td>108674</td><td>148539</td><td>148.539</td><th>6.99x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>635</td><th>4.92x</th><td>72056</td><td>76305</td><td>148361</td><td>148.361</td><th>6.98x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>271</td><th>2.10x</th><td>32690</td><td>74681</td><td>107371</td><td>107.371</td><th>5.05x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>129</td><th>1x</th><td>12222</td><td>9035</td><td>21257</td><td>21.257</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>202</td><th>1.57x</th><td>16598</td><td>10952</td><td>27550</td><td>27.55</td><th>1.30x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>851</td><th>2.43x</th><td>44388</td><td>104684</td><td>149072</td><td>149.072</td><th>4.94x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>598</td><th>1.71x</th><td>76806</td><td>195147</td><td>271953</td><td>271.953</td><th>9.01x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>1092</td><th>3.12x</th><td>363130</td><td>99742</td><td>462872</td><td>462.872</td><th>15.33x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>607</td><th>1.73x</th><td>71722</td><td>172026</td><td>243748</td><td>243.748</td><th>8.07x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>350</td><th>1x</th><td>15369</td><td>14829</td><td>30198</td><td>30.198</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>495</td><th>1.41x</th><td>39775</td><td>26909</td><td>66684</td><td>66.684</td><th>2.21x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing EmployeeTerritoryDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>233</td><th>12.94x</th><td>18809</td><td>54432</td><td>73241</td><td>73.241</td><th>10.98x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>2.11x</th><td>30148</td><td>67092</td><td>97240</td><td>97.24</td><th>14.58x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>234</td><th>13x</th><td>41937</td><td>41382</td><td>83319</td><td>83.319</td><th>12.50x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>53</td><th>2.94x</th><td>15149</td><td>42178</td><td>57327</td><td>57.327</td><th>8.60x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>18</td><th>1x</th><td>4092</td><td>2576</td><td>6668</td><td>6.668</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>43</td><th>2.39x</th><td>17871</td><td>3990</td><td>21861</td><td>21.861</td><th>3.28x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDetailDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>282</td><th>0x</th><td>23541</td><td>156953</td><td>180494</td><td>180.494</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>74</td><th>0x</th><td>120276</td><td>168841</td><td>289117</td><td>289.117</td><th>0x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>315</td><th>0x</th><td>85543</td><td>45873</td><td>131416</td><td>131.416</td><th>0x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>94</td><th>0x</th><td>28412</td><td>69481</td><td>97893</td><td>97.893</td><th>0x</th></tr><tr class='failed'><th class='c1'>ProtoBuf.net</th><td>21</td><th>0x</th><td>5836</td><td>-1</td><td>5835</td><td>5.835</td><th>0x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>76</td><th>0x</th><td>19465</td><td>8408</td><td>27873</td><td>27.873</td><th>0x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing OrderDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>615</td><th>5.69x</th><td>41883</td><td>97170</td><td>139053</td><td>139.053</td><th>7.32x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>366</td><th>3.39x</th><td>73211</td><td>168079</td><td>241290</td><td>241.29</td><th>12.70x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>758</td><th>7.02x</th><td>116217</td><td>80336</td><td>196553</td><td>196.553</td><th>10.34x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>366</td><th>3.39x</th><td>82365</td><td>158236</td><td>240601</td><td>240.601</td><th>12.66x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>108</td><th>1x</th><td>8871</td><td>10131</td><td>19002</td><td>19.002</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>253</td><th>2.34x</th><td>33238</td><td>19661</td><td>52899</td><td>52.899</td><th>2.78x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ProductDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>452</td><th>11.3x</th><td>30354</td><td>78548</td><td>108902</td><td>108.902</td><th>16.15x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>187</td><th>4.68x</th><td>44530</td><td>109135</td><td>153665</td><td>153.665</td><th>22.79x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>508</td><th>12.7x</th><td>204591</td><td>68772</td><td>273363</td><td>273.363</td><th>40.53x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>189</td><th>4.72x</th><td>34098</td><td>199712</td><td>233810</td><td>233.81</td><th>34.67x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>40</td><th>1x</th><td>4937</td><td>1807</td><td>6744</td><td>6.744</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>163</td><th>4.08x</th><td>19680</td><td>14780</td><td>34460</td><td>34.46</td><th>5.11x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing RegionDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>209</td><th>19x</th><td>19955</td><td>49654</td><td>69609</td><td>69.609</td><th>10.30x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>38</td><th>3.45x</th><td>26979</td><td>58583</td><td>85562</td><td>85.562</td><th>12.66x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>223</td><th>20.27x</th><td>36141</td><td>37646</td><td>73787</td><td>73.787</td><th>10.92x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>38</td><th>3.45x</th><td>13442</td><td>37051</td><td>50493</td><td>50.493</td><th>7.47x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>11</td><th>1x</th><td>4917</td><td>1843</td><td>6760</td><td>6.76</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>32</td><th>2.91x</th><td>12406</td><td>2560</td><td>14966</td><td>14.966</td><th>2.21x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing ShipperDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>235</td><th>6.91x</th><td>17628</td><td>49507</td><td>67135</td><td>67.135</td><th>9.32x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>64</td><th>1.88x</th><td>30136</td><td>66880</td><td>97016</td><td>97.016</td><th>13.46x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>269</td><th>7.91x</th><td>38522</td><td>45390</td><td>83912</td><td>83.912</td><th>11.64x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>64</td><th>1.88x</th><td>16244</td><td>41134</td><td>57378</td><td>57.378</td><th>7.96x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>34</td><th>1x</th><td>3643</td><td>3564</td><td>7207</td><td>7.207</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>54</td><th>1.59x</th><td>13694</td><td>3695</td><td>17389</td><td>17.389</td><th>2.41x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing SupplierDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>497</td><th>4.56x</th><td>33692</td><td>83506</td><td>117198</td><td>117.198</td><th>7.44x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>255</td><th>2.34x</th><td>46352</td><td>117915</td><td>164267</td><td>164.267</td><th>10.43x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>611</td><th>5.61x</th><td>73638</td><td>69331</td><td>142969</td><td>142.969</td><th>9.07x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>255</td><th>2.34x</th><td>30883</td><td>80616</td><td>111499</td><td>111.499</td><th>7.08x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>109</td><th>1x</th><td>7465</td><td>8291</td><td>15756</td><td>15.756</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>180</td><th>1.65x</th><td>18390</td><td>10335</td><td>28725</td><td>28.725</td><th>1.82x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing TerritoryDto 1,000 times</h3><table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr class=''><th class='c1'>Microsoft DataContractSerializer</th><td>248</td><th>13.05x</th><td>20668</td><td>54869</td><td>75537</td><td>75.537</td><th>11.64x</th></tr><tr class=''><th class='c1'>Microsoft JsonDataContractSerializer</th><td>61</td><th>3.21x</th><td>29825</td><td>74560</td><td>104385</td><td>104.385</td><th>16.09x</th></tr><tr class=''><th class='c1'>Microsoft BinaryFormatter</th><td>268</td><th>14.11x</th><td>42803</td><td>40569</td><td>83372</td><td>83.372</td><th>12.85x</th></tr><tr class=''><th class='c1'>NewtonSoft.Json</th><td>61</td><th>3.21x</th><td>37202</td><td>39937</td><td>77139</td><td>77.139</td><th>11.89x</th></tr><tr class='best-size best-time'><th class='c1'>ProtoBuf.net</th><td>19</td><th>1x</th><td>3405</td><td>3083</td><td>6488</td><td>6.488</td><th>1x</th></tr><tr class=''><th class='c1'>ServiceStack TypeSerializer</th><td>51</td><th>2.68x</th><td>11271</td><td>3589</td><td>14860</td><td>14.86</td><th>2.29x</th></tr>
</tbody>
</table>
</body>
</html>

